﻿using Managistics.Warehouse.Controllers.Interfaces;

namespace Managistics.Warehouse.Factories
{
    public interface IControllerFactory
    {
        ISubController CreateSubController(ComplexParameterObject parameter);

        IDashboardController CreateDashboardController(IView view, ComplexParameterObject parameter);

        IPurchaseController CreatePurchaseController(IView view);

        IInventoryAdjustController CreateInventoryAdjustController();

        IInventoryCalculateTotalController CreateInventoryCalculateTotalController();

        ISaleReportsController CreateSaleReportsController();

        IViewEnterOutputFromSaleController CreateViewEnterOutputFromSaleController();

        IViewEnterOutputSheetController CreateViewEnterOutputSheetController();

        IPurchaseReportsController CreatePurchaseReportsController();

        IViewEnterInputSheetController CreateViewEnterInputSheetController();

        void ReleaseController(IController controller);
    }
}